package com.xique.door.biz.service;



import com.xique.common.core.web.domain.AjaxResult;
import com.xique.door.bean.domain.PermissionGroupDCard;
import com.xique.door.bean.domain.PermissionGroupUser;
import com.xique.door.bean.request.commandV1.DeviceCommandDeleteNewRequest;
import com.xique.door.bean.request.commandV1.DeviceCommandDeleteRequest;
import com.xique.door.bean.request.commandV1.DeviceCommandDownloadRequest;
import com.xique.door.bean.request.commandV1.DeviceCommandGetRecStatusRequest;

import java.util.List;

/**
 * @author Administrator
 * 下发单用户信息到设备（单个/多个）
 * 下发多个用户信息到设备（单个/多个）
 * 删除单个用户信息到设备（单个/多个）
 * 删除多个用户信息到设备（单个/多个）
 *
 */
public interface IDeviceCommandService {

    /**
     * 下发用户信息到设备
     * @param request
     * @return
     */
    AjaxResult downloadUserInfo(DeviceCommandDownloadRequest request);

    /**
     * 下发用户信息到设备
     * @param request
     * @return
     */
    AjaxResult downloadDCardInfo(DeviceCommandDownloadRequest request);

    /**
     * 下发全部用户信息到设备
     * @param request
     * @return
     */
    AjaxResult downloadAllUserInfo(DeviceCommandDownloadRequest request);

    /**
     * 下发全部用户信息到设备
     * @param request
     * @return
     */
    AjaxResult downloadAllCardInfo(DeviceCommandDownloadRequest request);

    /**
     * 获取用户下发设备状态
     * @param request
     * @return
     */
    List<PermissionGroupUser> getRecStatus(DeviceCommandGetRecStatusRequest request);

    /**
     * 获取卡片下发设备状态（海清同用户）
     * @param request
     * @return
     */
    List<PermissionGroupDCard> getDCardRecStatus(DeviceCommandGetRecStatusRequest request);

    /**
     * 下发删除用户信息到设备
     * @param request
     * @return
     */
    AjaxResult delUserInfo(DeviceCommandDeleteRequest request);

    /**
     * 下发批量用户删除信息到设备
     * @param request
     * @return
     */
    AjaxResult delUserInfosCommand(DeviceCommandDeleteNewRequest request);

    /**
     * 下发访客信息到设备
     * @param request
     * @return
     */
    AjaxResult downloadVisitorInfo(DeviceCommandDownloadRequest request);

    /**
     * 获取设备信息
     * @author shd
     * @date 2021/7/5 11:23
     * @param parkId 项目ID
     * @param userId 用户ID
     * @param groupId 权限组ID
     * @return java.util.List<java.lang.String>
     */
    List<String> getDevSns(Long parkId, Long userId, Long groupId);

    /**
     * 获取设备信息接口V2
     * @author shd
     * @date 2021/7/5 11:27
     * @param parkId 项目ID
     * @param groupId 权限组ID
     * @param userIds 用户ID
     * @return java.util.List<java.lang.String>
     */
    List<String> getDevSns(Long parkId, Long groupId, List<Long> userIds);
}
